﻿using System.Collections.Generic;
using System.Linq;
using AMM.Model;

namespace AMM.DataAccess.Store {
    public class ProductStoreRepository : BaseRepository<ProductStore> {

        public ProductStore FetchProductStoreByProductAndStoreBasisId(int productId, int storeBasisId) {
            using (var ctx = this.Context) {
                return ctx.ProductStores.FirstOrDefault(x => x.ProductId == productId && x.StoreBasisId == storeBasisId);
            }
        }

        public List<ProductStore> FetchProductStoreByProductId(int productId) {
            using (var ctx = this.Context) {
                return ctx.ProductStores.Where(x => x.ProductId == productId).ToList();
            }
        }

        public List<ProductStore> FetchProductStoreByStoreBasisId(int storeBasisId) {
            using (var ctx = this.Context) {
                return ctx.ProductStores.Where(x => x.StoreBasisId == storeBasisId).ToList();
            }
        }

    }

    public class MaterialStoreRepository : BaseRepository<MaterialStore> {

        public MaterialStore FetchMaterialStoreByMaterialAndStoreBasisId(int materialId, int storeBasisId) {
            using (var ctx = this.Context) {
                return ctx.MaterialStores.FirstOrDefault(x => x.MaterialId == materialId && x.StoreBasisId == storeBasisId);
            }
        }

        public List<MaterialStore> FetchMaterialStoreByMaterialId(int materialId) {
            using (var ctx = this.Context) {
                return ctx.MaterialStores.Where(x => x.MaterialId == materialId).ToList();
            }
        }

        public List<MaterialStore> FetchMaterialStoreByStoreBasisId(int storeBasisId) {
            using (var ctx = this.Context) {
                return ctx.MaterialStores.Where(x => x.StoreBasisId == storeBasisId).ToList();
            }
        }

    }
}
